package com.lanou3g.code0510.reflection;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by dllo on 18/5/10.
 */
public class Test04 {
    public static void main(String[] args) throws Exception {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person());
        // personList.add("")
        //反射第一步获取类 类型
        Class clazz = personList.getClass();
        //通过反射获取类中的一个方法
        //第一个参数表示方法名
        // 后面的所有参数,需要传递 你要获取的 方法的参数类类型
        Method method = clazz.getDeclaredMethod("add",Object.class);
        //如果是public方法,这行代码可以省略
        //否则需要加上
        method.setAccessible(true);
        method.invoke(personList,"String");

        //通过反射成功将String类型的数据
        //放入了 Person 泛型的List中
        //证明泛型只在编译器生效,
        //在程序运行时期,会统一擦除成Object
        Object s = personList.get(1);
        System.out.println(s);


    }
}
